package com.py.credit.dao;

import com.py.credit.entity.CompanyGenealogy;
import com.py.credit.entity.GenealogyNode;
import com.py.framework.core.base.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 企业族谱查询dao
 *
 * @author YaoS
 * @date 2019-04-15 10:18
 */
public interface CompanyGenealogyDao extends BaseMapper<CompanyGenealogy> {

    /**
     * 功能描述: 获取企业族谱详情
     *
     * @param id id
     * @return CompanyGenealogy
     * @author YaoS
     * @date 19/4/17 16:04
     */
    CompanyGenealogy getDetail(String id);
    /**
     * 功能描述: 获取企业族谱关联信息
     *
     * @return 企业族谱关联信息
     * @author YaoS
     * @date 19/4/15 10:23
     */
    List<CompanyGenealogy> getAssociate();


    /**
     * 功能描述:获取企业族谱数据
     *
     * @param A000001         企业名
     * @param resourceId      资源表名
     * @param associateColumn 关联字段
     * @param showColumn      展示字段
     * @return 查询结果
     * @author YaoS
     * @date 19/4/15 10:39
     */
    List<GenealogyNode> getGenealogy(@Param(value = "A000001") String A000001,
                                     @Param(value = "resourceId") String resourceId,
                                     @Param(value = "associateColumn") String associateColumn,
                                     @Param(value = "showColumn") String showColumn);


    /**
     * 功能描述：新增企业族谱关联表
     *
     * @param companyGenealogy 企业族谱关系类
     */
    void addCompanyGenealogy(CompanyGenealogy companyGenealogy);


    /**
     * 功能描述：删除企业族谱关联表
     *
     * @param ids 企业族谱关联表id
     */
    void delCompanyGenealogy(@Param(value = "list") List<String> ids);


    /**
     * 功能描述：修改企业族谱关联表
     *
     * @param companyGenealogy 企业族谱关系类
     */
    void updateCompanyGenealogy(CompanyGenealogy companyGenealogy);

    CompanyGenealogy getCompanyGenealogyByAssociateName(@Param(value = "associateName") String associateName);
	List<GenealogyNode> getGenealogyZrr(@Param(value = "nodeName") String nodeName,
                                     @Param(value = "A000001") String A000001,
                                     @Param(value = "associateColumn") String associateColumn,
                                     @Param(value = "showColumn") String showColumn);
	
	/**
	 * @param showColumns 
	 * @Title: getbaseInfo
	 * @Description: TODO(获取基本信息)
	 * @param  tablename
	 * @param @return    设定文件
	 * @return Map<String,String>    返回类型
	 * @throws
	*/
	
	Map<String, String> getbaseInfo(
			@Param(value = "tablename")String tablename,
			@Param(value = "name")String name,
			@Param(value = "column")String column);
	
	/**
	 * @Title: getassociateInfo
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param name
	 * @param @return    设定文件
	 * @return List<Map<String,String>>    返回类型
	 * @throws
	*/
	
	List<Map<String, String>> getassociateInfo(@Param(value = "name")String name);
	
	/**
	 * @Title: getqyInfo
	 * @Description: TODO(企业关联信息)
	 * @param @param string
	 * @param @param name
	 * @param @param column
	 * @param @param gdshowColumns
	 * @param @return    设定文件
	 * @return List<Map<String,String>>    返回类型
	 * @throws
	*/
	
	List<Map<String, String>> getqyInfo(
			@Param(value = "tablename")String tablename,
			@Param(value = "name")String name, 
			@Param(value = "column")String column
			);
}
